package com.crx.springbootinit.service;

import com.crx.springbootinit.model.dto.collect.CollectGiveDTO;
import com.crx.springbootinit.model.dto.collect.CollectPageDTO;
import com.crx.springbootinit.model.dto.page.PageVO;
import com.crx.springbootinit.model.entity.Collect;
import com.baomidou.mybatisplus.extension.service.IService;
import com.crx.springbootinit.model.vo.collect.CollectMyPostVO;
import com.crx.springbootinit.model.vo.collect.CollectPostListVO;
import com.crx.springbootinit.model.vo.post.PostHomeVO;

import java.util.List;

/**
 * <p>
 * 收藏 服务类
 * </p>
 *
 * @author author
 * @since 2024-10-21
 */
public interface ICollectService extends IService<Collect> {

    /**
     * 收藏和取消收藏
     *
     * @param collectGiveDTO 收藏参数
     */
    void giveCollect(CollectGiveDTO collectGiveDTO);

    /**
     * 查询收藏我帖子的人列表
     *
     * @param token token
     * @return 帖子列表
     */
    List<CollectMyPostVO> queryWhoCollectMyPostList(String token);

    /**
     * 查询我收藏的帖子列表
     *
     * @param userId userId
     * @return 帖子列表
     */
    List<PostHomeVO> queryMyCollectList(Long userId);

    /**
     * 查询我的获收藏数量
     *
     * @param token token
     * @return 收藏数量
     */
    Long getCollectMyCount(String token);

    Long getCollectMyCountByUserId(Long userId);
    /**
     * 分页查询我收藏的帖子列表
     *
     * @param collectPageDTO 分页参数
     * @return 分页结果
     */
    PageVO<CollectMyPostVO> queryCollectPage(CollectPageDTO collectPageDTO);

    Boolean isCollect(Long userId, Long postId);
}
